home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
8bitfiles.net/archives
/
archives.tar
/
archives
/
compuserve-file-archive
/
05 Programming
/
CRC-ML.TXT
< prev
next >
Wrap
Text File
|
2019-04-13
|
3KB
|
173 lines
********************************
* CRC PROTOCOL CALCULATION *
* FOR COMMODORE COMPUTERS *
* By Tom Brown *
********************************
calc = $1021
************************************
* THE POLYNOMIAL $1021 IS FOR THE *
* CALCULATION 2^16 + 2^12 + 2^5 + 1*
* THE NUMBER IS GOTTEN BY USING A *
* 1 IN EACH BIT CORRESPONDING TO *
* THE POLYNOMIAL. *
* EG: $1021 HAS A 1 IN BIT 0,5,& 12*
************************************
org $1300
*
* FIRST, WE HAVE TO ERASE THE OLD
* CRC VALUE AND INITIALIZE THE
* POLYNOMIAL WE WILL USE FOR THE
* CALCULATION. NOTE THAT THE POLY
* VARIABLE CAN BE CHANGED IN ONE
* PLACE TO BE USED BY THE WHOLE
* ROUTINE.
* A CALLING ROUTINE WILL CALL THIS
* ONLY ONCE. SUBSEQUENT CALLS WILL
* BE TO crcalc.
*
initcrc lda #0
sta crc ;CRC CALCULATION
sta crc+1
lda #<calc
sta poly ;POLYNOMIAL
lda #>calc
sta poly+1
rts
*
* THIS ROUTINE WILL CALCULATE THE
* CRC CHECKSUM WITH THE BYTE CURRENTLY
* IN THE ACCUMULATOR.
*
crcalc ldx #8 ;COUNT 8 BITS
loop pha ;SAVE DATA
*
* FIRST, WE xor BIT 7 OF DATA WITH
* BIT 15 OF CRC (BIT 7 OF HIGH